home *** CD-ROM | disk | FTP | other *** search
/ ftp.cs.arizona.edu / ftp.cs.arizona.edu.tar / ftp.cs.arizona.edu / icon / newsgrp / group98a.txt / 000151_icon-group-sender _Mon Mar 30 12:26:09 1998.msg < prev    next >
Internet Message Format  |  2000-09-20  |  5KB

  1. Return-Path: <icon-group-sender>
  2. Received: from kingfisher.CS.Arizona.EDU (kingfisher.CS.Arizona.EDU [192.12.69.239])
  3.     by baskerville.CS.Arizona.EDU (8.8.8/8.8.7) with SMTP id MAA12051
  4.     for <icon-group-addresses@baskerville.CS.Arizona.EDU>; Mon, 30 Mar 1998 12:26:09 -0700 (MST)
  5. Received: by kingfisher.CS.Arizona.EDU (5.65v4.0/1.1.8.2/08Nov94-0446PM)
  6.     id AA31944; Mon, 30 Mar 1998 12:26:08 -0700
  7. X-Sender: clodius@nis-pop.lanl.gov
  8. Message-Id: <v04003a05b1456cacc392@[128.165.58.113]>
  9. In-Reply-To: <199803281452.HAA29037@orpheus.gemini.edu>
  10. References: "William B. Clodius"'s mail message of Mar 27,  1:49pm.
  11. Mime-Version: 1.0
  12. Content-Type: multipart/mixed; boundary="============_-1320848357==_============"
  13. Date: Mon, 30 Mar 1998 10:08:52 -0600
  14. To: icon-group@optima.CS.Arizona.EDU
  15. From: "William B. Clodius" <wclodius@lanl.gov>
  16. Subject: Re: Icon and recursion
  17. Errors-To: icon-group-errors@optima.CS.Arizona.EDU
  18. Status: RO
  19. Content-Length: 3938
  20.  
  21. --============_-1320848357==_============
  22. Content-Type: text/plain; charset="us-ascii"
  23.  
  24. After modifying some things around I now have a version of the Change
  25. benchmark that is working. I am not certain which modification caused it to
  26. work, but I suspect it involved the local attribute for some temporaries.
  27. After I got it working I rewrote the benchmark to eliminate most
  28. temporaries, and got about a 30% improvement in performance. As might be
  29. expected with an interpreter for a problem code that does not address the
  30. language domain, performance is about two orders of magnitude slower than
  31. for compiled imperative languages. On the other hange the source code is
  32. from 3/4 to half the size of that of the imperative languages, C and F90.
  33.  
  34. I should note that at this point I am mostly interested in learning the
  35. flavor of the language before I decide to learn it in detail, so I have not
  36. gotten Griswold's text. I have read the introductory material by Hanson,
  37. Shipman, and Griswold that is available on the net. The system I am using
  38. is an SGI Indigo 2 although I also have an old Power Mac available.
  39.  
  40. There was some interest expressed in seeing the code I was using so that I
  41. have attached them. The Tak benchmark (and the change benchmark for large
  42. argument values)  results in an Evaluation stack exceeded error which I
  43. suspect is due to the large number of recursions invoked by the benchmarks,
  44. and not to any problems in Icon with recursion in general. Tak in
  45. particular was designed to test the effiency of general recursion and
  46. invokes recursion I believe tens of thousands of times.
  47.  
  48.  
  49. --============_-1320848357==_============
  50. Content-Id: <v04003a05b1456cacc392@[128.165.58.113].0.0>
  51. Content-Type: text/plain; name="change.icn"; charset="us-ascii"
  52. Content-Disposition: attachment; filename="change.icn"
  53.  ; modification-date="Mon, 30 Mar 1998 09:41:55 -0600"
  54.  
  55. procedure main( args )
  56.     local start_time, n
  57.     start_time := &time;
  58.     n := integer(args[1]);
  59.     write ( args[1], "     ", count_change(n), "      ",
  60. (&time-start_time)/1000., " s");
  61. end
  62.  
  63. procedure first_denomination( kinds_of_coins )
  64.     case kinds_of_coins of {
  65.     1: return 1
  66.     2: return 5
  67.     3: return 10
  68.     4: return 25
  69.     5: return 50 };
  70. end
  71.  
  72. procedure cc( amount, kinds_of_coins )
  73.     if amount = 0 then {return 1} else {
  74.     if amount < 0 then  {return 0} else {
  75.         return cc( (amount - first_denomination( kinds_of_coins )),
  76. kinds_of_coins ) + cc(amount, kinds_of_coins - 1) } }
  77. end
  78.  
  79. procedure cc_tail( amount, kinds_of_coins, count )
  80.     if amount = 0 then {return count + 1} else {
  81.     if (amount < 0 | kinds_of_coins = 0) then {return count} else {
  82.         return cc_tail( (amount - first_denomination(kinds_of_coins)),
  83. kinds_of_coins, cc_tail( amount, kinds_of_coins-1, count)) }}
  84. end
  85.  
  86. procedure count_change( amount )
  87.     return cc_tail( amount, 5, 0 );
  88. end
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104. --============_-1320848357==_============
  105. Content-Id: <v04003a05b1456cacc392@[128.165.58.113].0.1>
  106. Content-Type: application/mac-binhex40; name="tak.icn"
  107. Content-Disposition: attachment; filename="tak.icn"
  108.  ; modification-date="Mon, 30 Mar 1998 09:42:21 -0600"
  109.  
  110. (This file must be converted with BinHex 4.0)
  111.  
  112. :"h4KDbjTBfi!9%9B9(4dH(3"!!!!!3B!!!!!irG`FQpMC@4eFQ8JE@&TELJJ+3d
  113. M)#!JCACPFRNJ)'iJ1MdJ-5"dEb!a-#!JC'm0)#!J)#!J)(GbDA4P)#JQG'PYC5`
  114. JG'&V+#!a1#`J-6)X)$BT+6X0C@jN$A"bEf0PC(9bC5"dB@XSH#`JH5`JHLN0)#!
  115. J)'PQ)'j[G#"j)$`JH#"dD'9Z$3PbCA0eE(3J1MdJHJdJ)#!JC@acC3d*FQ9cG@a
  116. d)$Sp)(4KDbJJG'&V+#!a,AJX)(NX)(ST,#!0#3NJ)#!J)#!JG'&V+#!a,ANX)(S
  117. X)(JT,!d*#5!J)#!J)#"dB@XS)$%YHL`JH#`JH5NT1`ebCA4eFQiJFQ9cG@ad1`e
  118. PEQ30rKB!!!:
  119. --============_-1320848357==_============
  120. Content-Type: text/plain; charset="us-ascii"
  121.  
  122.  William B. Clodius            Phone: (505) 665-9370
  123.  Los Alamos Natl. Lab., NIS-2  FAX: (505) 667-3815
  124.  PO Box 1663, MS-C323          Group Off.: 505/667-3422 or 667-5127
  125.  Los Alamos, NM 87545          email: wclodius@lanl.gov
  126.  
  127. --============_-1320848357==_============--
  128.  
  129.